Objectif : Mettre en oeuvre GNS3

GNS3 (Graphical Network Simulator) est un logiciel libre permettant l’émulation ou la simulation de réseaux informatiques.

gns3 logo

1. Installation

Suivre la procédure donnée dans ce document : installation-gns3.pdf

2. GNS3 GUI

gns3 gui

2.1. Les noeuds

2.1.1. VPCS

VPCS (Virtual PC Simulator) est le simulateur fourni par défaut pour les noeuds. Ce programme, écrit par Paul Meng, permet de simuler un PC léger prenant en charge DHCP et ping. Il ne consomme que 2 Mo de RAM par instance et ne nécessite pas d’image supplémentaire.

2.1.2. Conteneurs Docker

Il est possible d’utiliser des conteneurs Docker pour les noeuds dans GNS3 (https://docs.gns3.com/docs/emulators/docker-support-in-gns3).

Des conteneurs Docker pour GNS3 sont disponibles ici :

Dans les maquettes des TPS, on utilisera :

  • pour les machines hôtes, on utilisera tvaira/ubuntu-2004-gns3:latest

  • pour les machines clientes GUI, on utilisera tvaira/clients-debian-gns3:latest

  • pour les machines serveurs, on utilisera tvaira/server-ubuntu2004-gns3:latest

  • pour les routeurs, on utilisera kathara/quagga:latest

gns3 docker quagga

L’image tvaira/clients-debian-gns3:latest fournit Firefox et Filezilla et nécessite vncviewer pour s’y connecter à partir d’une console :

$ wget https://www.realvnc.com/download/file/viewer.files/VNC-Viewer-6.21.1109-Linux-x64.deb
$ sudo dpkg -i VNC-Viewer-6.21.1109-Linux-x64.deb

Pour ajouter une nouveau conteneur Docker, aller dans EditPreferencesDocker containers et cliquer sur New :

gns3 docker container templates

Puis :

gns3 new docker container template 1

Choisir entre une image existante :

gns3 new docker container template 2a

ou nouvelle image (https://hub.docker.com/) :

gns3 new docker container template 2b

Terminer en donnant un nom :

gns3 new docker container template 3

2.1.3. Machines virtuelles

Il est possible d’utiliser des VM de VirtualBox ou VMWare.

Pour ajouter une VM de VirtualBox, aller dans EditPreferencesVirtualBox VMs et cliquer sur New :

gns3 vm templates

gns3 new vm template 1

Choisir une VM dans la liste :

gns3 choose vm template

Terminer en cliquant sur Finish :

gns3 new vm template 2

2.1.4. Appareils (appliance)

Les appliances sont disponibles au téléchargement sur le marketplace de GNS3 : https://gns3.com/marketplace/appliances/

Certains appareils nécessitent vncviewer pour s’y connecter à partir d’une console :

$ wget https://www.realvnc.com/download/file/viewer.files/VNC-Viewer-6.21.1109-Linux-x64.deb
$ sudo dpkg -i VNC-Viewer-6.21.1109-Linux-x64.deb
webterm

webterm est une boîte à outils réseau basée sur Debian. Il contient le navigateur web Firefox plus les utilitaires suivants : net-tools, iproute2, ping, traceroute, curl, host, iperf3, mtr, socat, ssh, tcpdump, …​

Télécharger l'appliance sur le marketplace de GNS3 : https://gns3.com/marketplace/featured/webterm

L’image tvaira/clients-debian-gns3:latest, basée sur webterm, ajoute Filezilla.

Open vSwitch

Open vSwitch est un commutateur virtuel multicouche.

Télécharger l'appliance sur le marketplace de GNS3 : https://gns3.com/marketplace/appliances/open-vswitch

Open vSwitch supportant le protocole OpenFlow, il est possible d’ajouter une administration à distance des commutateurs via un contrôleur Faucet.

OpenFlow est un protocole réseau standard qui permet de réaliser une architecture Software-defined networking (SDN). Ce protocole est constitué d’instructions qui permet de programmer le plan de contrôle d’un équipement réseau.

Les contrôleurs comme Faucet utilisent OpenFlow pour contrôler la façon dont Open vSwitch (et d’autres commutateurs) traitent les trames et les paquets dans le réseau.

On ajoute un conteneur Docker avec l’image faucet/faucet:latest :

gns3 docker faucet

Puis on ajoute la commande à exécuter au démarrage :

gns3 faucet start command

Routeur Open source

pfSense est un projet de routeur open source basé sur FreeBSD (une version de linux) prenant en charge le routage, le DHCP et le NAT. De plus, il possède un firewall.

Liens :

Télécharger l'appliance : https://gns3.com/marketplace/featured/pfsense

Puis l’installer dans GNS3 :

gns3 pfsense appliance

2.2. Configuration d’un noeud

2.2.1. Réseau

Il est habituel d’éditer la configuration réseau d’un noeud :

gns3 edit config

Puis par exemple pour l’interface eth0 :

gns3 config interfaces

Le mot clé up permet d’ajouter des commandes au démarrage de l’interface, par exemple : up route add -net 172.16.32.0 netmask 255.255.255.0 gw 192.168.0.254

2.2.2. Conteneur Docker

Pour les conteneurs Docker, on configure généralement :

  • la commande à exécuter au démarrage (start command), par exemple : sh -c "/bin/bash -i" ou tout simplement /bin/bash"

  • le nombre d’interface réseau (adapters), 1 par défaut

  • le type de console (telnet, vnc ou http)

  • les variables d’environnement, par exemple : PROMPT_COMMAND=history -a (pour conserver l’historique des commandes saisies)

node properties server apache 1

Dans l’onglet Advanced :

  • ajouter des noms d’hôte dans le fichier /etc/hosts

  • ajouter des répertoires persistants au conteneur Docker, par exemple :

node properties server apache 2

2.2.3. Type de console

On utilise habituellement une console de type telnet pour opérer avec un noeud. Si le noeud fournit une GUI, il faudra utiliser vncviewer pour s’y connecter à partir d’une console :

$ wget https://www.realvnc.com/download/file/viewer.files/VNC-Viewer-6.21.1109-Linux-x64.deb
$ sudo dpkg -i VNC-Viewer-6.21.1109-Linux-x64.deb

Certains conteneurs utilise http :

gns3 console http

2.3. Topologie d’une maquette

Créer un nouveau projet ou télécharger et importer dans GNS3 une maquette fournie pour un TP :

gns3 import project 1

Exemple de maquette basique :

gns3 maquette interface

Il faut démarrer les machines de la maquette (toutes avec la flèche verte de la barre d’outils ou individuellement avec le menu contextuel clic droit d’une machine):

gns3 start machine

L’ensemble des noeuds :

gns3 maquette running

2.4. Capture de trames

Il est possible de démarrer une (ou plusieurs) capture Wireshark sur un lien de la maquette :

gns3 start capture

ou :

gns3 start capture wireshark

Puis :

gns3 packet capture

2.5. Divers

Au démarrage d’une machine, il est possible que les liens symboliques (déterminant les noms par défaut de certaines commandes par exemple) soient manquants. Une méthode simple pour corriger les alternatives cassées est d’utiliser :

# yes '0' | update-alternatives --force --all

3. Web-Ui

L’accès à GNS3 peut aussi se faire par une interface Web : http://<adresse-ip>/

Utiliser l’adresse IP de l’interface réseau avec un Accès par pont.

gns3 web ui

Créer et ouvrir un projet pour accéder à l’interface de GNS3

gns3 add project

Exemple de topologie réseau :

gns3 project topology

Dans l’interface Web-Ui, ouvrir un projet :

gns3 open project

Puis ajouter des noeuds :

gns3 add a node

Et des liens :

gns3 add a link

Pour obtenir le réseau suivant par exemple :

gns3 project topology

Sélectionner un noeud et faire un clic droit :

gns3 clic droit

  • Start : démarrer le noeud puis,

  • Web console in new tab : ouvrir une console dans un onglet

gns3 console web

  • Pour les images Docker :

Dans l’interface Web-Ui, aller dans Préférences :

gns3 goto preferences

Sélectionner Docker :

gns3 preferences docker

Puis ajouter un nouveau template :

gns3 add docker container

Paramètrer le nouveau conteneur :

gns3 new docker container 1

gns3 new docker container 2

gns3 new docker container 3

gns3 new docker container 5

Finaliser en cliquant sur Add template.

4. Liste des TPs